#ifndef __LIST_H_
#define __LIST_H_

#include <stdio.h>
#include <errno.h>
#include <sys/stat.h>
#include <sys/types.h>
#include <fcntl.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <signal.h>

typedef struct list { //链表节点
    int id; 
    char src[20];
    char dest[20];
    char data[512];
    struct list *next;
}LIST;

#define PUBLICFIFO "serverfifo"

LIST *creatlist(); //创建节点
int addlist(LIST *ls,int id,char *src,char *data);  //添加节点
int changelist(LIST *ls,int id,char *src,char *dest,char *data); //修改节点
int dellist(LIST *login, char *src); //删除节点
void showlist(LIST *ls); //遍历链表，打印出来
int findlist(LIST *ls,char *name); //查找登录的用户中是否有这个用户存在
int resolve(int id,LIST *usrinfo,LIST *loginlist); //分析id号来辨别用户的操作   
int commclient(LIST *usrinfo,int fdserver);//接收用户输入，判别用户输入，然后把用户输入转换到im结构体里面   
void readclient(char *);  //从用户自己的fifo文件中读取服务器发过来的数据
void benoblock(int fd); //把文件设置为非阻塞

#endif
